#ifndef TEVAMPINFOTAB_H
#define TEVAMPINFOTAB_H

#include <QWidget>
#include <QHBoxLayout>
#include "tabframe/mapinfo/mapinfotab.h"

class TEVAmpFeature;

/**
 * @brief The TEVAmpInfoTab class 暂态地电压局放图谱
 */
class TEVAmpInfoTab : public MapInfoTab
{
    Q_OBJECT
public:
    explicit TEVAmpInfoTab(QWidget *parent = nullptr);
    virtual ~TEVAmpInfoTab();
public:
    /**
    * @brief 设置检测数据类型编码
    * @param code 数据类型编码
    */
    void setDataTypeCode(uint8_t code) override;

    /**
    * @brief 设置图谱数据长度
    * @param length 数据长度
    */
    void setDataLength(int32_t length) override;

    /**
    * @brief 设置图谱生成时间
    * @param time 生成时间
    */
    void setCreateTime(const QString& time) override;

    /**
    * @brief 设置图谱性质
    * @param property 图谱性质
    */
    void setChartProperty(const DataSpecificationGW::SpectrumCharacter& property) override;

    /**
    * @brief 设置被测设备名称
    * @param name 设备名称
    */
    void setDeviceName(const QString& name) override;

    /**
    * @brief 设置被测设备编码
    * @param code 设备编码
    */
    void setDeviceCode(const QString& code) override;

    /**
    * @brief 设置测点名称
    * @param name 测点名称
    */
    void setMeasurementName(const QString& name) override;

    /**
    * @brief 设置测点编码
    * @param code 测点编码
    */
    void setMeasurementCode(const QString& code) override;

    /**
    * @brief 设置检测通道标志
    * @param flag 通道标志
    */
    void setChannelFlag(int64_t flag) override;

    /**
    * @brief 设置存储数据类型
    * @param type 数据类型
    */
    void setDataType(uint8_t type) override;

    /**
    * @brief 设置幅值单位
    * @param unit 幅值单位
    */
    void setAmplitudeUnit(uint8_t unit) override;

    /**
    * @brief 设置幅值下限
    * @param lowerLimit 下限值
    */
    void setAmplitudeLowerLimit(float lowerLimit) override;

    /**
    * @brief 设置幅值上限
    * @param upperLimit 上限值
    */
    void setAmplitudeUpperLimit(float upperLimit) override;

    /**
    * @brief 设置暂态地电压幅值数据
    * @param data 数据
    */
    void setTransientVoltageAmplitudeData(const QString& data) override;

    /**
    * @brief 设置暂态地电压幅值最大值
    * @param amplitude 最大值
    */
    void setMaxTransientVoltageAmplitude(float amplitude) override;

    /**
    * @brief 设置脉冲数
    * @param count 脉冲数
    */
    void setPulseCount(int32_t count) override;

    /**
    * @brief 设置背景文件名称
    * @param fileName 文件名
    */
    void setBackgroundFileName(const QString& fileName) override;

    /**
    * @brief 设置预留数据
    * @param byte 预留数据
    */
    void setReservedData(const QByteArray& byte) override;

private:
    std::shared_ptr<TEVAmpFeature> m_tevAmpFeature;
    QGroupBox* m_pChartBox;
    QTextEdit* m_pChartData;
    QHBoxLayout* m_pMainLayout;
    QHBoxLayout* m_pLayout;
};

#endif // TEVAMPINFOTAB_H
